package org.edu.modules.oa.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.shiro.SecurityUtils;
import org.edu.common.system.vo.LoginUser;
import org.edu.modules.oa.entity.SysDictItemEntity;
import org.edu.modules.oa.entity.VeOaCarJiayouEntity;
import org.edu.modules.oa.entity.VeOaTongxunluEntity;
import org.edu.modules.oa.mapper.ISysDictItemMapper;
import org.edu.modules.oa.mapper.IVeOaTongxunluMapper;
import org.edu.modules.oa.service.IVeOaTongxunluService;
import org.edu.modules.oa.vo.VeOaTongxunluVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import javax.management.relation.RoleInfo;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

@Service
public class VeOaTongxunluServiceImpl extends ServiceImpl<IVeOaTongxunluMapper, VeOaTongxunluEntity> implements IVeOaTongxunluService {

    @Resource
    private IVeOaTongxunluMapper iVeOaTongxunluMapper;
    @Resource
    private ISysDictItemMapper iSysDictItemMapper;

    //单表查询（是否共享，单位名称，姓名）
    @Override
    public HashMap<String, Object> selectTongxunlu(VeOaTongxunluEntity veOaTongxunluEntity, Integer startPage, Integer pageSize) {
        // 调用mybatisplus的分页
        IPage<VeOaTongxunluEntity> page=new Page<>(startPage,pageSize);
        //拼接查询条件
        QueryWrapper<VeOaTongxunluEntity> queryWrapper = new QueryWrapper<>();
        if (veOaTongxunluEntity.getIsShare() != null){
            queryWrapper.eq("is_share",veOaTongxunluEntity.getIsShare());
        }
        if (veOaTongxunluEntity.getUnitName() != null && !veOaTongxunluEntity.getUnitName().equals("")){
            queryWrapper.like("unit_name",veOaTongxunluEntity.getUnitName());
        }
        if (veOaTongxunluEntity.getUserName() != null && !veOaTongxunluEntity.getUserName().equals("")){
            queryWrapper.like("user_name",veOaTongxunluEntity.getUserName());
        }
        //个人id有值就是个人通讯录
        if(veOaTongxunluEntity.getCreateBy() != null && !veOaTongxunluEntity.getCreateBy().equals("")){
            queryWrapper.eq("create_by",veOaTongxunluEntity.getCreateBy());
        }

        //是否共享 个人通讯录不给值，共享给0
        if (veOaTongxunluEntity.getIsShare() != null){
            queryWrapper.eq("is_share",veOaTongxunluEntity.getIsShare());
        }
        //未删除的
        queryWrapper.eq("is_deleted",0);
        queryWrapper.orderByDesc("create_time");


        //条件+分页查询
        page = iVeOaTongxunluMapper.selectPage(page,queryWrapper);
        List<VeOaTongxunluEntity> entityList = page.getRecords();

        List<VeOaTongxunluVo> voList = new ArrayList<>();
        // for循环把需要用的字段加到 导出集合里面去
        for (VeOaTongxunluEntity en:entityList){
            //性别
            VeOaTongxunluVo vo = new VeOaTongxunluVo();
            if (en.getSex() == 0){
                vo.setSex("男");
            }else {
                vo.setSex("女");
            }

            //是否共享
            if (en.getIsShare() == 0){
                vo.setIsShare("是");
            }else {
                vo.setIsShare("否");
            }

            //生日（时间类型转换成字符串）
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
            vo.setBirthday(formatter.format(en.getBirthday()));

            vo.setId(en.getId());
            vo.setUserName(en.getUserName());
            vo.setJob(en.getJob());
            vo.setUnitName(en.getUnitName());
            vo.setUnitPhone(en.getUnitPhone());
            vo.setHomePhone(en.getHomePhone());
            vo.setEmail(en.getEmail());
            vo.setPhone(en.getPhone());
            vo.setQq(en.getQq());

            voList.add(vo);
        }
        //查询表格总行数
        int count = iVeOaTongxunluMapper.selectCount(queryWrapper);
        //把查出来的东西存到map里面去
        HashMap<String,Object> map = new HashMap<>();
        map.put("list",voList);
        map.put("count",count);

        return map;
    }

    //新增个人通讯录
    @Override
    public Integer addPersonTongxunlu(VeOaTongxunluEntity veOaTongxunluEntity) {
        int res = 0;
        res = iVeOaTongxunluMapper.insert(veOaTongxunluEntity);
        return res;
    }

    // 批量/单条删除个人通讯录(逻辑删除)
    @Override
    public Integer deletePersonTongxunlu(List<Long> ids) {
        int res = 0;
        //res = iVeOaTongxunluMapper.deletePersonTongxunlu(list);
        res = iVeOaTongxunluMapper.deleteBatchIds(ids);
        return res;
    }

    //修改个人通讯录
    @Override
    public Integer updatePersonTongxunlu(VeOaTongxunluEntity veOaTongxunluEntity) {
        int res = 0;
        //修改条件-主键id
        res = iVeOaTongxunluMapper.updateById(veOaTongxunluEntity);
        return res;
    }

    //查看职务 (职务名称)
    @Override
    public HashMap<String, Object> selectJob(SysDictItemEntity sysDictItemEntity) {
        //拼接查询条件
        QueryWrapper<SysDictItemEntity> queryWrapper = new QueryWrapper<>();
        if (sysDictItemEntity.getItemText() != null && !sysDictItemEntity.getItemText().equals("")){
            queryWrapper.like("item_text",sysDictItemEntity.getItemText());
        }
        queryWrapper.eq("dict_id",sysDictItemEntity.getDictId());
        //条件查询
        List<SysDictItemEntity> entityList = iSysDictItemMapper.selectList(queryWrapper);
        //把查出来的东西装到map里
        HashMap<String,Object> map = new HashMap<>();
        map.put("list",entityList);
        return map;
    }

    //导出记录 查所有个人/共享
    @Override
    public List<VeOaTongxunluVo> export(VeOaTongxunluEntity veOaTongxunluEntity) {
        //创建查询的条件
        QueryWrapper<VeOaTongxunluEntity> queryWrapper = new QueryWrapper<>();
        //个人
        if (veOaTongxunluEntity.getCreateBy() != null && !veOaTongxunluEntity.getCreateBy().equals("")){
            queryWrapper.eq("create_by",veOaTongxunluEntity.getCreateBy());
        }
        //是否共享
        if (veOaTongxunluEntity.getIsShare() != null){
            queryWrapper.eq("is_share",veOaTongxunluEntity.getIsShare());
        }
        //按时间倒序
        //queryWrapper.orderByDesc("create_time");
        //查数据库，获取所有数据的集合
        List<VeOaTongxunluEntity> entityList = iVeOaTongxunluMapper.selectList(queryWrapper);
        //集合voList是导出excel用的
        List<VeOaTongxunluVo> voList = new ArrayList<>();

        for (VeOaTongxunluEntity en : entityList){
            VeOaTongxunluVo vo = new VeOaTongxunluVo();
            //流水
            vo.setId(en.getId());
            //姓名
            vo.setUserName(en.getUserName());
            //性别
            if (en.getSex() == 0){
                vo.setSex("男");
            }else {
                vo.setSex("女");
            }
            //生日
            //时间类型转换字符串
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
            vo.setBirthday(formatter.format(en.getBirthday()));
            //职位
            vo.setJob(en.getJob());
            //单位名称
            vo.setUnitName(en.getUnitName());
            //单位电话
            vo.setUnitPhone(en.getUnitPhone());
            //家庭电话
            vo.setHomePhone(en.getHomePhone());
            //手机
            vo.setPhone(en.getPhone());
            //电子邮件
            vo.setEmail(en.getEmail());
            //qq
            vo.setQq(en.getQq());
            //是否共享
            if (en.getIsShare() == 0){
                vo.setIsShare("是");
            }else {
                vo.setIsShare("否");
            }
            //创建时间
            //时间类型转换字符串
            SimpleDateFormat formatterss = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            vo.setCreateTime(formatterss.format(en.getCreateTime()));

            //创建人
            //获取登录人信息
            LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
            vo.setCreateBy(user.getRealname());

            voList.add(vo);
        }
        return voList;
    }





}
